package redislock

import "context"

type LockOption struct {
	retryLock       bool               // 重试
	retryTimeout    int64              // 重试最长时间（单位：秒）
	watchDogDisable bool               // 看门狗启用
	watchDogActive  int32              // 看门狗运行状态 0=未启用 1=启用
	watchDogCancel  context.CancelFunc // 看门狗取消函数
}

// 配置
type Option func(*RedisLock)

// ttl 超时回调函数
func WithTTLTimeoutCallback(f func()) Option {
	return func(l *RedisLock) {
		l.ttlTimeoutCallback = f
	}
}

// 重试（单位：秒）
func WithRetry(timeout int64) Option {
	return func(r *RedisLock) {
		r.retryLock = true
		r.retryTimeout = timeout
	}
}

// 关闭看门狗（秒）
func WithDisableWatchDog() Option {
	return func(r *RedisLock) {
		r.watchDogDisable = true
	}
}
